using System;
using System.Collections.Generic;
using Locator.Silverlight.Client.Models.ViewModels.Elements;

namespace Locator.Silverlight.Client.Models
{
    public interface IStoreModel
    {
        void GetPersonalLocationsForCurrentUserAsync(Action<List<PersonalLocationViewModel>, Exception> callback);

        void FindStoresByPostalCodeAsync(string postalCode, int radiusInKm, Action<List<StoreViewModel>, Exception> callback);

        void FindStoresByLatitudeAndLongitudeAsync(decimal latitude, decimal longitude, int radiusInKm, Action<List<StoreViewModel>, Exception> callback);

        void FindStoresByPersonalLocationAsync(int personalLocationId, int radiusInKm, Action<List<StoreViewModel>, Exception> callback);

        void GetStoresForCurrentUserAsync(Action<List<StoreViewModel>, Exception> callback);

        void FindStoresNotUsedByCurrentUserAsync(Action<List<StoreViewModel>, Exception> callback);

        void AllCitiesAsync(Action<List<CityViewModel>, Exception> callback);

        void FindStoresInCityAsync(string cityName, Action<List<StoreViewModel>, Exception> callback);

        void AddStoreForCurrentUserAsync(UserStoreViewModel store, Action<Exception> callback);

        void DeleteStoreForCurrentUserAsync(StoreViewModel store, Action<Exception> callback);
    }
}
